#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 2e5+7;
vector<int> uni[maxn];
int n;
int u[maxn], s[maxn];
string s1, s2;
void reset() {
  for(int i=0; i<maxn; ++i) {
    uni[i].clear();
  }
}
void solve() {
  for(int k=1; k<=n; ++k) {
    ll res = 0;
    for(int i=1; i<=n; ++i) {
      int ed = (uni[i].size()/k)*k;
      for(int j=0; j<ed; ++j) {
        res += uni[i][j];
      }
    }
    cout<<res<<' ';
  }
  cout<<'\n';
}
int main() {
  ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#ifndef ONLINE_JUDGE
  freopen("in.txt", "r", stdin);
#endif
  int tc; cin>>tc;
  while(tc--) {
    reset();
    cin>>n; cin.get();
    for(int i=0; i<n; ++i) {
      cin>>u[i];
    }
    for(int i=0; i<n; ++i) {
      cin>>s[i];
    }
    for(int i=0; i<n; ++i) {
      uni[u[i]].push_back(s[i]);
    }
    for(int i=1; i<=n; ++i) {
      sort(uni[i].begin(), uni[i].end(), greater<int>());
    }
    solve();
  }
}
